package com.graduation.project.service.process;

import com.baomidou.mybatisplus.extension.service.IService;
import com.graduation.project.entity.dto.*;
import com.graduation.project.entity.dto.grade.SaveOrUpdateGradeDTO;
import com.graduation.project.entity.dto.thesis.ListThesisDTO;
import com.graduation.project.entity.po.Thesis;
import com.graduation.project.utils.ResultUtil;

public interface ThesisService extends IService<Thesis> {

    void createThesis(Long taskId, Integer type);

    /**
     * 查询论文列表数据
     * @param input 查询论文输入类
     * @return ResultUtil
     */
    ResultUtil<?> listThesisByCondition(ListThesisDTO input);

    /**
     * 审核论文
     * @param input 修改状态输入类
     * @return ResultUtil
     */
    ResultUtil<?> auditThesis(UpdateStatusDTO input);

    /**
     * 获取当前论文定稿分数
     * @param taskId 课题id
     * @return ResultUtil
     */
    ResultUtil<?> getThesisGrade(Long taskId);

    /**
     * 指导老师评分（定稿）
     * @param input 评分输入类
     * @return ResultUtil
     */
    ResultUtil<?> gradeThesis(SaveOrUpdateGradeDTO input);

    /**
     * 为定稿分配评阅人
     * @param input 分配评阅人输入类
     * @return ResultUtil
     */
    ResultUtil<?> allotEvaluator(AllotDTO input);

    /**
     * 为定稿分配答辩小组
     * @param input 分配输入类
     * @return ResultUtil
     */
    ResultUtil<?> allotDefense(AllotDTO input);

    /**
     * 上传论文
     * @param input 文件上传输入类
     * @return ResultUtil
     */
    ResultUtil<?> uploadThesisFile(UploadFileDTO input);

    /**
     * 删除论文
     * @param input 删除文件输入类
     * @return ResultUtil
     */
    ResultUtil<?> deleteThesisFile(DeleteFileDTO input);
}
